<?php

class file_managerActions extends sfActions {

    public function executeIndex(sfWebRequest $request){
        $DS = DIRECTORY_SEPARATOR;
        $path_to_files = sfConfig::get('sf_upload_dir').$DS."files";
        //se usapara mover archivos deuna ubicacion a otra
        ////obtiene  el archivo de   "sfConfig::get('sf_upload_dir').$DS."files";"
        $files = array();

        if ($handle = opendir($path_to_files)) {
            //opendir -->>> Devuelve un gestor de directorio tipo resource en caso de éxito, o FALSE si ocurre un error.
            while (false !== ($entry = readdir($handle))) {
                if($entry !== '.' && $entry !== '       ..') {
                    $files[] = $entry;
                }
            }
            closedir($handle);
        }
        sort($files);
        $this->files = $files;
    }

    public function executeNew(sfWebRequest $request){
    }
/* */
    public function executeNew_save(sfWebRequest $request){
        $file = $_FILES["file"]["tmp_name"];//$_FILES["nombre"]["tmp_name":temporal]
        $max_size = 3000000;//3MB

        if ($_FILES["file"]["size"] < $max_size){
            if ($_FILES["file"]["error"] > 0){
                $this->getUser()->setFlash('msg',"Error: " . $_FILES["file"]["error"]);//envia mensaje ala usuario temporal
                $this->redirect('@file_manager');//redireccionala index del file manager
            }else{
                if($file!=''){
                    try {
                        $DS = DIRECTORY_SEPARATOR;   /*  solo es un separador --> '/'      */
                        //move_uploaded_file ( string $filename , string $destination )
                        ////direcciona  donde debe ser guardabo en el servidor
                        move_uploaded_file($file, sfConfig::get('sf_upload_dir').$DS."files".$DS.$_FILES["file"]["name"]);
                    } catch (Exception $exc) {
                        error_log($exc->getTraceAsString());
                        $this->getUser()->setFlash('msg',"No se pudo subir el archivo");
                        $this->redirect('@file_manager');
                    }
                }
            }
        }else{
            $this->getUser()->setFlash('msg',"Archivo demasiado pesado");
            $this->redirect('@file_manager');
        }

        $this->getUser()->setFlash('msg','Archivo subido satisfactoriamente');
        $this->redirect('@file_manager');
    }

       /*elimina el archivo del directorio */
    public function executeDelete(sfWebRequest $request){
        $filename = $request->getParameter('filename');

        try {
            $DS = DIRECTORY_SEPARATOR;  //equivalente al separador -->> "/"
            unlink(sfConfig::get('sf_upload_dir').$DS."files".$DS.$filename);//elimana un archivo
        } catch (Exception $exc) {
            error_log($exc->getTraceAsString());
            $this->getUser()->setFlash('msg',"No se pudo eliminar el archivo");
            $this->redirect('@file_manager');
        }

        $this->getUser()->setFlash('msg','Archivo eliminado satisfactoriamente');
        $this->redirect('@file_manager');
    }

}